{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl {\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fnil\fcharset0 Courier New;}}
{\colortbl ;\red0\green0\blue0;}
\uc1\pard\cf1\ulnone\f0\fs20 Master Mage: "Conjuration, for you apprentice mages, is the summoning of inanimate objects. These can be either material or ethereal objects, but as you know, creation is nigh-well impossible, so they must exist on some plane of existence. The most famous of conjurers are many. You may have seen things suddenly appear in the hands of your favorite heroes. This is conjuration."\par
\par
Shadowtext: I'll translate for the readers in the mundane plane of Earth. You must make the item before it can be conjured.\par
\par
 \par
\par
Master Mage: "Let us begin with Conjured Weapons. Both ethereal and material objects are summoned in the same way. But first, you must memorize what your present equipment is. If you forget it, it could be lost for eternity in an extra-dimensional warp. Of course, you create a spell in the usual way."\par
\par
Shadowtext: This means, make a variable store your present weapon. To create the spell, use a "Switch" type skill that turns on a switch. This switch allows an "Autostart" event in the MonsterParty. Say \par
\par
Battle Event "Conjure"\par
Conditions.Switch: Conjure_Flame\par
Switch.Equipment_Change = ON\par
vPresentWeapon = Hero.Conjurer.ArmsNo\par
\par
Master Mage: "Now for the actual conjuration. You simply contact the weapon itself, and access its power by manifesting it physically. It is automatically equipped. Let us try an ethereal blade of fire. Don't forget to end the spell, or the magic could swell indefinitely."\par
\par
Shadowtext: Switching Conjure_Flame OFF will end the event so as to stop it from eterna-looping. Now this same event will look like:\par
\par
Battle Event "Conjure"\par
Conditions.Switch: Conjure_Flame\par
Switch.Equipment_Change = ON\par
vPresentWeapon = Hero.Conjurer.ArmsNo\par
ChangeEquipment.Fix.Conjurer.Blade_of_Flame\par
Switch.Conjure_Flame = OFF\par
\par
Master Mage: "Sometimes these blades might require magic to sustain. You must continually channel energy or they will disappear."\par
\par
Shadowtext: In the event "Conjure" you should add another switch. This pet can be "MP Reduction" Now there should be one every turn\par
\par
Battle Event "MP Drain"\par
Condition: Switch.MP_Reduction = ON\par
Condition: TurnNumber 1X? + 0 Turn\par
vMP = Hero.Conjurer.MP\par
ForkCondition vMP above 5\par
____ChangeMP.Conjurer.MPStrict.Set 5\par
____Message: "Conjurer has lost 5 HP maintaining the 'Blade of Flame.'"\par
Else\par
____Message: "Blade of Flame has returned to the Ethereal Plane of Fire."\par
____ChangeEquipment.Conjurer.Variable 001:vPresentWeapon\par
____Switch.sEquipmentChanged = OFF\par
End If\par
\par
 \par
\par
Master Mage: "When the battle is over, such a weapon should be banished after the defeat of your enemy. Because carrying a weapon from another plane can almost always cause problems if allowed to maintain itself here."\par
\par
Shadowtext: This event will be featured at the end of battle.\par
\par
Battle Event "Banish"\par
Condition: Switch.sEquipmentChanged = ON\par
Condition: Enemy.Enemy1.HP = 0%\par
ChangeEquipment.Conjurer.Variable 001:vPresentWeapon\par
Switch.sEquipmentChanged = OFF\par
\par
Master Mage: "And that's conjuration in a nutshell. You will of course all adapt this ability to your own individual styles of spellcraft, but the basic framework is now known to you."\par
\par
Shadowtext: Adapt this to your various games. And if you figure out a better way to tell the end of a battle, post it here.\par
Today we talk about Physical dependancy spells. These are the spells that require your own physical attributes. For instance, a spell where you would lift yourself in the air and drop yourself on the enemy would require your weight.\par
\par
The name of the game is "Statistics." The weight thing would of course be defense, though. This will also show you how to make spells that have your own damge algorythms.\par
\par
First you must form the basic spell. Let's attempt the Drop spell I mentioned before. First you must lift yourself in the air, and drop. You will feel the weight pulling you as you fall.\par
\par
Form the spell, as usual, with a Switched event. The switch will be "Drop_Spell." We'll code that like this.\par
\par
Battle Event "Drop"\par
Event Condition: Switch."Drop_Spell" = ON\par
ShowBattleAnimation "Drop"\par
\par
But how can you tell how much you can hurt the enemy? Well, that requires some figuring. Basically, though, there are pretty basic formulae.\par
\par
Algorythm time. Afterward, access the caster's defense attribute. We'll have to form an Algorythm.\par
\par
(((2 * Defense) + (Mind - 5)) * 10) / (Enemy.Defense + Enemy.MDefense).\par
\par
Will work fine. Add this to the above event:\par
\par
 \par
\par
vDamage = Hero.Mage.Defense Power\par
vDamage = vDamage * 2\par
vMind = Hero.Mage.Mind Force\par
vMind = vMind - 5\par
vDamage = vDamage + vMind\par
vDamage = vDamage * 10\par
vEnemy = Enemy.Enemy1.Defense\par
vEnemy = vEnemy - Enemy.Enemy1.MindForce\par
vDamage = vDamage / vEnemy\par
ChangeEnemyHP.HP_Strict.Variable 00002: vDamage\par
\par
Overall, the spell is very complex, but understandable.\par
\par
The totalized event:\par
\par
 \par
\par
Battle Event "Drop"\par
Event Condition: Switch."Drop_Spell" = ON\par
vEnemyNumber = Random Number up to \par
ShowBattleAnimation "Drop"\par
vDamage = Hero.Mage.Defense Power\par
vDamage = vDamage * 2\par
vMind = Hero.Mage.Mind Force\par
vMind = vMind - 5\par
vDamage = vDamage + vMind\par
vDamage = vDamage * 10\par
vEnemy = Enemy.Enemy1.Defense\par
vEnemy = vEnemy - Enemy.Enemy1.MindForce\par
vDamage = vDamage / vEnemy\par
ChangeEnemyHP.HP_Strict.Variable 00002: vDamage\par
Switch."Drop Switch" = OFF\par
Master Mage: "Sometimes spells require certain elements to be present to work. Mostly, this is for people who can't channel, but I'll teach them anyway.\par
\par
Shadowtext: Umm, yeah. You may remember Raistlin Majere's use of Rose Petals and sand to put people to sleep, or maybe if you played Secret of Evermore you remember Alchemy. This is what we are talking about.\par
\par
 \par
\par
Master Mage: "First, you must have the spell components. Apprentice! Pass out the Potpourri\par
\par
Shadowtext: Yeah, right. Anyway, first the Items must be made. So make a "Common Item" called "Rose Petal."\par
\par
 \par
\par
Master Mage: "Next form the spell in your mind. Whatever you must do to initiate it, Magic Words, Sigils, whatever your own style of magic requires.\par
\par
Shadowtext: So now, the event. Clearly, the spell must turn on a switch. We'll call this spell "Sleep." You already know how to do Algorythms for damage, now I'll show you how to do a percentile-condition inducer as well. It's easy to combine them.\par
\par
Battle Event "Sleep"\par
Condition: Switch."SleepSpell" = ON\par
vRosePetals = Item.Rose_Petal.OwningNumber\par
ForkCondition "Variable 00001: vRosePetals" Above 1\par
AddItem.DropItem.Rose_Petal.1\par
vSuccess = RandomNumber 1 * 100\par
ForkCondition "Variable 00002: vSuccess" Above 70\par
ChangeEnemyState.AddState.Sleep\par
End Case\par
Else\par
Message: "This Spell requires a Rose Petal"\par
ChangeMP.MPRestore.(Casting Cost)\par
End Case\par
\par
Master Mage: "This was really easy to do. It's easy enough to do this without enemies attacking, too.\par
\par
Shadowtext: Just add a common event.\par
\par
Common Event "Awake"; Parallel Process\par
Condition: Switch."Awake" = ON\par
vRosePetals = Item.Rose_Petal.OwningNumber\par
ForkCondition "Variable 00001: vRosePetals" Above 1\par
AddItem.DropItem.Rose_Petal.1\par
vSuccess = RandomNumber 1 * 100\par
ForkCondition "Variable 00002: vSuccess" Above 70\par
ChangeCondition.CancelCondition.Sleep\par
End Case\par
Else\par
Message: "This Spell requires a Rose Petal"\par
ChangeMP.MPRestore.(Casting Cost)\par
End Case\par
\par
Master Mage: "As you can see, this was pretty easy to do, now that you already know several other points.\par
\par
Shadowtext: So now you can do Conditions, Damage, and Healing through algorythms, since Healing is just changing "HP Strict" to "HP Restore," and "ChangeEnemyHP" to "ChangeHP."\par
Master Mage: "Especially when working with Chaotic Mana, it can be hard ot know exactly what will happen. You should catalog a list of spells in your mind, and then you'll know what will likely be one of them.\par
\par
Shadowtext: These are great for summon spells. Remember how Odin could do Gungnir or Zantetsuken? Or, for FF8 fans, how Gilgamesh could do Zantetsuken, Excalibur, Excalipur and some other? Well now you too can have a multi-spell summoned monster.\par
\par
\par
Master Mage: "Okay, now for the cataloguing. \par
\par
Shadowtext: Yes. Well, you can't enact normal spells, so all of these will have to be Algorythmic. Which means we need to use the skills from Lessons 2 and 3. So, let's just use the actual spells from them. Remember?\par
\par
Common Event "Awake"; Parallel Process\par
Condition: Switch."Awake" = ON\par
vSuccess = RandomNumber 1 * 100\par
ForkCondition "Variable 00002: vSuccess" Above 70\par
____ChangeCondition.CancelCondition.Sleep\par
End Case\par
Switch: "Awake" = OFF\par
\par
Battle Event "Drop"\par
Event Condition: Switch."Drop_Spell" = ON\par
ShowBattleAnimation "Drop"\par
vDamage = Hero.Mage.Defense Power\par
vDamage = vDamage * 2\par
vMind = Hero.Mage.Mind Force\par
vMind = vMind - 5\par
vDamage = vDamage + vMind\par
vDamage = vDamage * 10\par
vEnemy = Enemy.Enemy1.Defense\par
vEnemy = vEnemy - Enemy.Enemy1.MindForce\par
vDamage = vDamage / vEnemy\par
ChangeEnemyHP.HP_Strict.Variable 00002: vDamage\par
\par
\par
Master Mage: "For now, we'll just use two, but it is very easy to add more, and to use different spells\par
\par
Shadowtext: What he said. Now for the random spells. It's just basically the Random Number variable, and any effects you want to add.\par
\par
Battle Event "Random Spell"\par
Condition: Switch "Random" = ON\par
vSpellCast = Random Number 1 * 100\par
Fork Conditions vSpellCast Above 50\par
____ShowBattleAnimation "Drop"\par
____vDamage = Hero.Mage.Defense Power\par
____vDamage = vDamage * 2\par
____vMind = Hero.Mage.Mind Force\par
____vMind = vMind - 5\par
____vDamage = vDamage + vMind\par
____vDamage = vDamage * 10\par
____vEnemy = Enemy.Enemy1.Defense\par
____vEnemy = vEnemy - Enemy.Enemy1.MindForce\par
____vDamage = vDamage / vEnemy\par
____ChangeEnemyHP.HP_Strict.Variable 00002: vDamage\par
Else\par
____Message: "Casts Awaken"\par
____ForkCondition "Variable 00011: vSuccess" Above 70\par
________ChangeCondition.CancelCondition.Sleep\par
End Case\par
Switch "Random" = OFF\par
\par
\par
Master Mage: "It's easy enough to perform even more complex spells from that example, is it not?\par
\par
Shadowtext: He's right. But if there are any questions, don't feel embarassed, its pretty advanced stuff.\par
Master Mage: "So you've returned again. So you want to know how to draw powers from items, and memorize the magic. Well, it'll take time."\par
\par
Shadowtext: Well, anyway, it'll take skill.\par
\par
 \par
\par
Master Mage: "Okay. Now I hope you brought your magical artifacts. I have the Cauldron of Rebirth, so I will learn the spell from it.\par
\par
Shadowtext: There are several different ways of learning. We'll start with the "Equipped Learn." This method will allow you to cast the spell while this item's equipped, and you'll learn the spell through experience.\par
You'll need two common events per artifact, an Initiation, and a "Learn" event.\par
\par
Common Event, Parallel Process: "Initiate Cauldron"\par
Comment: "The item "Cauldron" is item #1 for the purposes"\par
Comment: "of this tutorial. It will be different for"\par
Comment: "whatever Item # you make your item."\par
Comment: "Skip the "Add Spell" Fork, and put it at"\par
Comment: "The Level Up event if you don't want it to"\par
Comment: "Be available yet."\par
\par
vItem = Hero.[Person(s)toCheck].Other_No.\par
ForkConditions vItem = 1\par
____Switch CauldronEquipped = ON\par
____ForkConditions vCauldronLevel 1 same\par
________ChangeSkill.[ChosenCharacter(s)].Rebirth Add\par
____End Case\par
Else\par
____ForkConditions vCauldronLevel 1 same\par
________ChangeSkill.[ChosenCharacter(s)].Rebirth Remove\par
____End Case\par
End Case\par
Wait 01 x 0 .1 sec\par
\par
Shadowtext: Now for what happens when it's on. Now we must check if it is the first turn it's been equipped. We also need to make the amount of experience (or Tech Points if you're making each monster give some.) This is also the way to level up Items, so I'll explain that, as well.\par
\par
Common Event, Parallel Process "ExperienceCheck_Cauldron"\par
ForkConditions Switch."FirstRun" = OFF\par
____vStartingExperience = Hero.[ChosenCharacter(s)].Exp\par
____vStartingExperience = vStartingExperience - vCauldronExp\par
____Comment: "This above part makes sure if it is being"\par
____Comment: "Re-equipped, it retains its old exp. Just"\par
____Comment: "Set vCauldronExp to 0 in your Intro Event."\par
____Switch."FirstRun" = ON\par
End Case\par
vExperience = Hero.[ChosenCharacter(s)].Exp\par
vExperience = vExperience - vStartingExperience\par
vCauldronExp = vExperience\par
ForkConditions vCauldronExp 5000 Above\par
Comment: "Remember this fork."\par
____ForkConditions vCauldronLevel 1 Same\par
________Message: "You have mastered the spell 'Rebirth!'"\par
________vCauldronLevel = 2\par
____End Case\par
End Case\par
Comment: "Just add more here if you have more spells/levels"\par
Wait 1 x 0.1 sec\par
\par
Master Mage: "So now you can learn from items.\par
\par
 \par
\par
Shadowtext: But what if you want the item above to level up differently? What if you want it to be replaced with a more powerful item at level up? That's simplicity itself. Did you remember the Fork I told you to? Well, change it to do this.\par
\par
____ForkConditions vCauldronLevel 1 Same\par
________Message: "The Cauldron has leveled up!"\par
________Message: "The Cauldron became the Chalice!"\par
________ChangeEquipment.[ChosenCharacter(s)].Change Chalice\par
________AddItem.DropItem.Cauldron 1\par
________vCauldronLevel = 2\par
____End Case\par
\par
Shadowtext: Just be sure that the "Chalice" is the same Type as the "Cauldron." Now it has upgraded.\par
\par
Master Mage: "Although, why one needs such a smart artifact, I'll never know.\par
\par
Shadowtext: Well, you don't fight horrendous enemies, you teach. Remember, "If you can, do. If you can't, teach."\par
\par
Master Mage: "Shaddup.\par
Master Mage: "Oh, well, back to work. It's Monday, so this'll not be a lecture with much flare, but it'll teach you what you need to know."\par
\par
Shadowtext: My head....urghh.\par
\par
 \par
\par
Master Mage: "Today we will make the Regenerative condition. It's not easy, but most of the techniques aren't."\par
\par
Shadowtext: Right. We'll make a condition, but make it unhealable, and give it no effects. Call it "Regen" or "Regenerating" or "Photosynthesis" or "Wing of Gerbil" or something.\par
\par
Master Mage: "Wing of Gerbil?"\par
\par
Shadowtext: Whatever. Anyway, now to inflict this condition, you must use the Status Infliction algorythm from lesson....3 was it? Anyway, you need to modify it like this.\par
\par
 \par
\par
Battle Event "Reg_Inflict"\par
Condition Switch."Regen_Inflict" = ON\par
vSuccessRate RandomNumber 1 * 100\par
ForkConditions vSuccessRate 45 Above\par
____ForkConditions Switch."Regenerative" = ON\par
________ConditionChange.Character(vRegChar).Remove "Regen"\par
____End Case\par
____vRegChar = RandomNumber 1 * 4\par
____Comment: "The above randomly chooses a character."\par
____ConditionChange.Character(vRegChar).Add "Regen"\par
____Switch."Regenerative" = ON\par
End Case\par
\par
 \par
\par
Master Mage: "And you understand. You're making it to where the world can notice an effect on someone. Now for the upkeep."\par
\par
Shadowtext: Yes. One Black Mana every turn or discard Jun...\par
\par
Master Mage: "Not that upkeep."\par
\par
Battle Event "Regen Upkeep"\par
Conditions: Switch."Regenerative" = ON\par
vSuccess = RandomNumber 1 * 100\par
vSuccess = vSuccess + vNumber_of_Rounds\par
ForkConditions vSuccess 20 Above\par
____ConditionChange.Character(vRegChar).Remove "Regen"\par
____Switch."Regenerative" = OFF\par
____Message: "Regeneration wore off."\par
Else\par
____ChangeHP.Character(vRegChar) 10%\par
End Case\par
\par
Master Mage: "So then that's the "Regen" ability. But any cumulative effect can be done like that."\par
\par
Shadowtext: Yes, and a "Shield" spell would be similar to conjuration plus a false condition. So now you know\par
\par
 \par
\par
vNumber_of_Rounds = vNumber_of_Rounds + 1\par
vNumber_of_Rounds = vNumber_of_Rounds * 5\par
Comment: "The number of rounds makes the condition go away." \par
Master Mage: "Okay, sometimes, it is easier to make an item with a low integrity, when you install massive magical power. An example is one-time-revival artifacts.\par
\par
Shadowtext: The Reverse Doll. The Resistance or Shield Ring. These are incredibly powerful artifacts from Star Ocean 2. Well, how do you make one? It's simple. Give it whatever stats you want, and make it normal equipment of whatever neccesary type.\par
\par
Master Mage: "The feather of a phoenix can revive someone who has fallen, but loses its power after the first time. While it's hard to understand Phoenix Magic, we can interpret it, if not quite copy it.\par
\par
Shadowtext: Urmm....yeah. So then, it requires a check event. Again. We'll make this one Item 1.\par
\par
Battle Event "Check Phoenix Feather"\par
Conditions: None\par
vHP = Hero.Char1.HP\par
vArmorNumber = Hero.Char1.OtherNo\par
ForkConditions vArmorNumber 1 Same\par
____ForkConditions vHP 0 same\par
________Condition.CancelCondition "Normal"\par
________ChangeEquipment.Char1.Dodge Other\par
________AddItem.Drop."Phoenix Feather"\par
____End Case\par
End Case\par
\par
Shadowtext: Rinse, Lather, Repeat. Follow up the check by making a congruous fork for each other character.\par
\par
Master Mage: "And of course, the Phoenix Feather only enacts if you've fallen. Others don't neccesarily have a condition like that.\par
Master Mage: "Combining magical power with a friend is a good way to increase power. Now clearly, only certain spells can combine. Both of you must be prepared to cast first."\par
\par
Shadowtext: One idea would be to only add the spells when a character is in your party. That would be easiest as a common event checking which Characters are in the party. Now of course, you can probably work one out by yourself for now. Reply if you need an example. Anyway, what I'm showing today is how to cast the spell!\par
\par
\par
Master Mage: "In the first method, you must combine your powers. Tactile contact and concentration is important in this method."\par
\par
Shadowtext: So then, you must find a way to stop the other character from casting, right? Well, and remember this is a battle event called by a "Switch" spell. I also won't bother to show the Battle Damage algorythm, you've seen that in other lessons. What we'll need is a condition by the name of "Charging" or "Casting," something like that. It should have the same effects as the "Mind Shock" condition. Make the proper strings of course to where it'll look nice.\par
\par
\par
Battle Event "Combine!"\par
Condition Switch."Combo_Antipode" = ON\par
ChangeCondition.Character2.AddCondition "Casting"\par
Switch."Magic" = ON\par
vChar1 = (The character casting half of the spell)\par
vChar2 = (The character casting the other half of the spell)\par
Comment: "The above variables can be used to make sure that"\par
Comment: "a person can't combine twice during a round. See"\par
Comment: "further down for details."\par
\{Input damage algorythm here\}\par
Label 01: End of Combo\par
Switch."Magic" = OFF\par
Switch."Combo_Antipode" = OFF\par
\par
Master Mage: "Never try to cast two spells at once. That has cause Mana Poisoning as well as Nervous Breakdowns."\par
\par
Shadowtext: Yeah, so how does one stop the others from casting multis? Well, put this quote at the beginning of the casting event. It checks everything out.\par
\par
\par
(Here put a variable to decide which character is combining with the caster. vSupporter)\par
ForkConditions Switch."Magic" = ON\par
____ForkConditions vChar1 vSupporter Same\par
________Message: "The support character is busy."\par
________Goto Label 01\par
Master Mage: "Okay, this is the Item Creation thru magic seminar. Now remember, pure creation is not something much done by humans, so really, 'Modification' would be a better name for this lesson. Well, what'll you need? Since I will show how to cook magically, we'll use an egg."\par
\par
Shadowtext: Okay, the items need to be predefined. So make an Item "Scrambled Eggs." To tell the truth, implemented correctly, this can be a peice of cake. That's why we're using Dairy!  So for now come up with your own way to call it. I'll give you the algorythms.\par
\par
Common Event "Item Create" Call Event\par
Message: "Choose your ingredient."\par
Comment: "You can replace this with your own interface"\par
Choice "Eggs", "Meat", "Bread", "Cancel"\par
____Case Eggs\par
________Call Event "Success_Find"\par
________ForkConditions Switch."Successful" = OFF\par
____________Goto Label "End"\par
________End Case\par
________Call Event "Eggs_Make"\par
____Case Meat\par
________Call Event "Success_Find"\par
________ForkConditions Switch."Successful" = OFF\par
____________Goto Label "End"\par
________End Case\par
________Call Event "Meat_Make"\par
____Case Bread\par
________Call Event "Success_Find"\par
________ForkConditions Switch."Successful" = OFF\par
____________Goto Label "End"\par
________End Case\par
________Call Event "Bread_Make"\par
____Case Cancel\par
End Choice\par
Label "End"\par
\par
Master Mage: "And if you're successful?"\par
\par
Shadowtext: I'm getting to it.\par
\par
Common Event "Success_Find" Call Event\par
vSuccess = RandomNumber 1 * 100\par
ForkConditions vSuccess 27 Above\par
____Switch."Successful" = ON\par
End Case\par
\par
Master Mage: "Simple. What about the actual modification?"\par
\par
Shadowtext: It's just chance. So you do something similar to the success event.\par
\par
Common Event "Eggs_Make" Call Event\par
vItem = RandomNumber 1 * 100\par
ForkConditions vItem 23 Below\par
____Message "Created Scrambled Eggs"\par
____AddItem.ScrambledEggs.Add 1\par
End Case\par
ForkConditions vItem 24 Above\par
____ForkConditions vItam 35 Below\par
________Message "Created Invisible Eggs!"\par
________AddItem.InvisibleEggs.Add 1\par
____End Case\par
End Case\par
Master Mage: "Well then, you war-mages will often notice that monsters sometimes use powers that might use magic. Ever wanted to copy them?"\par
Shadowtext: This is not going to use any items or anything. The enemy spell will be different from the Hero Spell. Maybe the hero spell will be preceded by a "$p" to add a little character thingy. Of couse, that isn't necesary, they can share the same name.\par
\par
Master Mage: "You must study the spell in action, which requires watching the enemy. You must understand the spell, and know it completely."\par
Shadowtext: The watch event is kind of buggy, and it would be hard to implement. For now, I'll just have to show the "Blue Magic" learning style. Make the enemy use a "switch" magic for the "GrandTrain" switch. Remember that its only necesary to put this in the monster party of monsters that use this magic. \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Battle Event "Cast GrandTrain"\par
Condition Switch."GrandTrain" = ON\par
vSuccessfulLearn = Random 1 * 100\par
ForkCondition vSuccessfulLearn 45 above\par
____ForkCondition Hero.Strago PartyNeed\par
________Switch."GrandTrain" On\par
____End Case\par
End Case \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Then of course, add the monster's damage algorythm (affecting the heores instead of monsters.) And the spell "GrandTrain" can be a regular spell.\par
\par
Master Mage: "After noticing the spell, you can memorize it."\par
Shadowtext: Have a Parralel Process to check if "GrandTrain" is On.\par
\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Common Event "Learn Skill"\par
ForkConditions Switch."GrandTrain" = ON\par
____ForkConditions Hero.Strago.SpecialSkill.GrandTrain known\par
________\par
____Else\par
________Message: "Strago learned 'Grand Train'"\par
________ChangeSkill.Strago.Memorize "Grand Train"\par
____End Case\par
End Case \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Master Mage: "Copying is easy."\par
Shadowtext: Slow day....it's the Monday after a holiday. Don't worry, I'll work Labour Day. Tomorrow's Lesson -- Conditional Spells. As in "L5 Death" and things like that\par
Master Mage: "Sometimes, a spell can be cast more easilly if it is specific to one or two factors. For instance, height."\par
Shadowtext: This is the "Math Skill" from Tactics, basically. But you might remember some Blue Magic like "L5 Doom." Here's how ya' do it. Well, have you noticed that variables do not support decimnals? That's the key! You'll need two variables. Remember though, that monsters don't have levels naturally. So you'll have to use another stat. Here's the code:\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Battle Event "HP5 Doom"\par
Condition Switch."HP5doom" = ON\par
Comment: "Loop this next part for however enemies there are."\par
vHP = Enemy1.HP\par
vStorage = vLevel\par
vLevel = vLevel / 5\par
vLevel = vLevel * 5\par
ForkConditions vLevel vStorage Same\par
____ChangeEnemyCondition.Enemy1.AddCondition.Normal\par
End Case \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Master Mage: "These lectures are getting shorter and shorter. You apprentices need to ask more advanced questions! You see, you already know so much that I have to explain less."\par
Shadowtext: Yeah, I'm going to be out of a job soon. Anyway, I don't know what to do for the next lesson yet, but look for it. \par
Master Mage: "Oh dear, Spirits. What a hangover."\par
Shadowtext: I told you not to try that vodka. And now you've a class to teach.\par
\par
Master Mage: "What day is it?"\par
Shadowtext: Friday. Now, introduce the lesson, as requested by Raichu00.\par
\par
Master Mage: "Hmm. Monster Catching, right? Binding them to your will, yeah?"\par
Shadowtext: Right. So, there are two methods. We'll start with the "Pok\'e9mon Method." This way, the captured ones become party members.\par
\par
Master Mage: "Well, it'll require the bonding of a monster."\par
Shadowtext: Duh, Ayolis. \par
\par
Master Mage: "That's 'Master Mage.'"\par
Shadowtext: That's not what the barkeep called you last night I think he said "Son of a..."\par
\par
Master Mage: "Watch it!"\par
Shadowtext: Yes. Well, to set this up, have a character with the same name as the monster. And give it the same magic. And similar stats. Now, 'tis easy. If you use the "Party Switching" that requires switches, use a switch, otherwise just "Add to party." Now, either an item or use a spell, starting a switch, "Capture." \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Battle Event "Capture Me"\par
Condition Switch."Capture" = ON\par
ChangeParty.AddMember.Fix (Monster)\par
ChangeEnemyCondition.(Monster).AddCondition Normal\par
Message: "Captured " & (monster) & "! Hooray!"\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Master Mage: "And, of course, sometimes the condition of the monster can affect this."\par
Shadowtext: You can figure out the conditions area, I've shown you Algorythm upon Algorythm. Any way, go on, oh Master Mage.\par
\par
Master Mage: "Now suppose you merely wish to indenture the Monster temporarily. Well, That may require some work."\par
Shadowtext: Okay, you'll need to make a "Summon Spell" animation. Now, as for the capturing. Well, replace the "Add" event above with an event that sets a variable. That variable describes which monster it is. This is the "Final Fantasy" style. Now, as for the "Casting,"  \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Battle Event "Call"\par
Condition Switch."CallSpell" = ON\par
Condition Variable."Monster" 0 Other\par
Comment: "'Other' means 'not equal to.'"\par
ForkConditions Variable."Monster" 1 Same\par
____Comment: "Damage Algorythm. Or maybe Condition."\par
End Case\par
Comment: "Repeat as desired."\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Master Mage: "That's a lot of work though. Hey, why don't I just 'Heal' My hangover?"\par
Shadowtext: Because alcohol inhibits channeling.\par
\par
Master Mage: "%@#&"\par
Shadowtext: (giggle). Okay, next lecture, "The Perfect Cure for a Hangover." (Not Really) \par
Master Mage: "What? An Atma Weapon. Oh, of course. So an Avataric-Weapon? One which is based on a stat?"\par
Shadowtext: You've got the idea.\par
\par
Master Mage: "We should have included this in 'Artificial Magic.' Anyway, you'll need an 'Atma Weapon.' A regular sword for the most part, but with an enchantment."\par
Shadowtext: Yeah, a regular weapon. Or ten of 'em. Basically, it's like Hyper-Conjuring. And it'll need to be in every single battle. Okay, it'll be like this. Assume that AtmaWeapons are Weapons 10-20. \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Battle Event "Atma"\par
Conditions: None\par
vWeapon = Hero.(Owner of Atma).ArmsNo.\par
ForkConditions vWeapon 10 Bigger\par
____ForkConditions vWeapon 20 Smaller\par
________vHP = Hero.(Owner of Atma).HP\par
________vHP = vHP / Hero.(Owner of Atma).MaxHP\par
________Comment: "This tells what percent of his MaxHP\par
________Comment: "The hero is at."\par
________ForkConditions vHP 0 Bigger\par
____________ForkConditions vHP 10 Smaller\par
________________ChangeEquipment.(Owner of Atma).(Atma 1)\par
________________AddItem.DropItem.Variable vWeapon 1\par
____________End Case\par
________End Case\par
________Comment: Repeat Nine Times. And increment by 10.\par
____End Case\par
End Case\par
\par
\par
--------------------------------------------------------------------------------\par
\par
\par
Shadowtext: Now if you have multiple people who can equip the Atma, repeat that event for each of them.\par
\par
Master Mage: "Succinctly done."\par
Shadowtext: I'm getting better at this. The best way to learn is to teach!\par
\par
Master Mage: "What happend to 'Those who can't do, teach?'"\par
Shadowtext: Yeah, well... \par
Master Mage: "Money is powerful, they say. Wanna test that?"\par
Shadowtext: This isn't really your area.\par
\par
Master Mage: "I realize that. But you need me."\par
Shadowtext: Whatever. Okay, I think percentages are the best way to do this. \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Battle Event "Coin Toss"\par
Condition: Switch."ThrowCoins" = ON\par
vGP = Other.Money\par
vGP = vGP / 10\par
Comment: "10% of your gold is thrown this way. You might"\par
Comment: "want to reduce that, or make it absolute."\par
ForkCondition vGP 1000 Bigger\par
____vGP = 1000\par
End Case\par
vGPLost = vGPLost + vGP\par
Comment: "That is how you lose the money."\par
vGP = vGP * Hero.(Thrower).Level\par
Comment: "You won't be able to choose the enemy."\par
ShowBattleAnimation."CoinToss".Enemy1\par
Comment: "You can make up a way to hit them all, though."\par
ChangeEnemyHP.Enemy1.DecreaseHP.Variable vGP\par
Switch."ThrowCoins" = OFF\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Master Mage: "Losing the money, though?"\par
Shadowtext: Glad you reminded me. This is out-of-battle.\par
\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Common (Parrallel Process) Event "GoldLoss."\par
Condition:Variable.vGPLost 0 Above\par
ChangeGoldHeld.DecreaseMoney vGPLost\par
vGPLost = 0\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Master Mage: "See? You needed me to remind you."\par
Shadowtext: Fine, you keep your job.\par
\par
Master Mage: "Hey, remember, you are but a Journeyman! I outrank you."\par
Shadowtext: Fine. So I am still your underling. It hardly matters. \par
Master Mage: "Well the confused Lilliputian (feels so weird calling someone an adjective! But I guess that it CAN be a noun.) seems to have been excited about the counterspell. I suppose you're ready."\par
Shadowtext: The problem is, it can only work for a spell that is made using the Damage-Algorythm (Cast by the Enemy). Simply add to the Algorythm the line   \par
\par
\par
--------------------------------------------------------------------------------\par
\par
ForkConditions Switch."Counter" = ON\par
____Message: "The Spell was Countered!"\par
____Switch "Counter" = OFF\par
Else \par
\par
\par
--------------------------------------------------------------------------------\par
\par
Shadowtext: And put the damage-data in the "Else" condition. Now, as for draining it. Add this to the above Fork.\par
\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Message: \\c[(whatever character) " gained " (the MP Cost) " MP!"\par
ChangeMP.(Counterer).IncreaseMP (the MP Cost)\par
\par
\par
--------------------------------------------------------------------------------\par
\par
Master Mage: "But who's to say that counterspells always work?"\par
Shadowtext: I think they can figure out the probability factor.\par
\par
Master Mage: "There's also the question of "Reflection" spells."\par
Shadowtext: Ooh, that's a good idea. Okay to the above event, add the Damage Algorythm, and this time, reverse it by changing it to the "Enemy" data. Ingenious, no? And you could even make "Reflect" an item-attribute! Just make an event to check if that item is equipped, and then the "reflect" switch will always be on.\par
\par
Master Mage: So, that's it, then?\par
Shadowtext: Yeah, I think so. \par
\pard\sb100\sa100 Master Mage: "Well, today's lesson is more advanced than usual. But I'd still only mark it 'Intermediate.' Today, you're going to learn how to make a familiar, and all the implications thereof."\line Shadowtext: Okay, this will be longer than usual. And it will show you basically how to have more than four characters in battle, too. But it requires a lot of Forks. And you have to customize every battle. Okay here goes.\line\line Master Mage: "First, remember, Familiars do not HAVE to battle enemies. They can retrieve things for you, and do other things like guarding you."\line Shadowtext: Let's start with the "Pickup" type. They basically enact a store from far away. Let's say that there is a character who is a summoner. For the purpose of FAMILIARity, let's call her Rydia for now.\line\line Rydia's skill is "Summoning." This includes several spells. \par
\par
\pard\li360\ri360\sb100\sa100 Shop\line Scout\line Fighter\line Healer\line Magician\line Catalyst\par
\pard\sb100\sa100\par
Master Mage: "We're going to go into each of these. First, each spell summons a different monster. The 'Shop' will summon a Raven. The 'Scout' summons a Bat. The 'Fighter' summons a Bear. 'Healer' summons a St. Bernard, and 'Catalyst' summons a Cat. As it should be."\line Shadowtext: As you use the spells more and more, more powerful monsters come to your call. The more they come, the more powerful they become. Let's start with the "Shop."\line\line Master Mage: "When you call a Raven, it can only go to stores it knows. As you get more powerful, and teach it to be smarter, it can go to others."\line Shadowtext: This is an out-of-battle event. \par
\par
\pard\li360\ri360\sb100\sa100 Common Event: "Shop", Parallel Process.\line Condition Switch."Shop" = ON\line Comment: "There's a chance the Summons will fail. It"\line Comment: "increases with the level of the spell."\line vSuccess = vStorageExp\line vSuccess = vSuccess \\ 25\line vSuccess = vSuccess + 35\line vSuccessCheck = Random Number (1 * 100)\line ForkConditions vSuccessCheck vSuccess Below\line ____Message: "Contact Made! Choose an action!"\par
\pard\sb100\sa100 Shadowtext: Truly so. We're talking a complete Class change, with different Growth Rates, Learning Levels, even graphics. And of course degrees. But it's not THAT hard....but as with all of my lessons, it can be tedious. Oh, this was requested by Elecman, now Blue Rockman.\line\line Master Mage: "The first key is to know which rank you'll be going for. This will take heavy career planning and..."\line\line Shadowtext: This will take multiple characters of the same name. And optionally, similar (but not necessarily identical) graphics. Here's an example:\par
\line Character 1 - "Alex", "Apprentice Mage".\line Character 2 - "Alex", "Journeyman Mage".\line Character 3 - "Alex", "Master Mage".\line Character 4 - "Alex", "Archmage".\line Character 5 - "Alex", "Mage Laureate."\par
Shadowtext: Each character would have different growth rates and spells to learn, but...\line\line Master Mage: "During the switchover to Journeyman, one must move all his belongings to the Journeyman's barracks and prepare for reassignment."\line\line Shadowtext: Okay, the switchover. Anyway, as he said, how to keep your stuff. Well, I won't explain how you initiate the switch, but when you do, use this code (I'll be using [v0101: Character 1(Class)] to represent the character's current class.):\line\line ForkConditions Variable [0101: Character1(Class)] 1 Same\line ____Change Variable [0101: Character1(Class)] = 2\line [i]____Comment: Here, I'm assuming you're switching to the second available class.[/i]\line ____Change Variable [0001: ClassSwitch(Level)] Set Hero.Alex(Apprentice).Level\line ____Change Variable [0002: ClassSwitch(Exp)] Set Hero.Alex(Apprentice).Exp\line ____Change Variable [0003: ClassSwitch(HP)] Set Hero.Alex(Apprentice).HP\line ____Change Variable [0004: ClassSwitch(MP)] Set Hero.Alex(Apprentice).MP\line ____Change Variable [0005: ClassSwitch(MaxHP)] Set Hero.Alex(Apprentice).MaxHP\line ____Change Variable [0006: ClassSwitch(MaxMP)] Set Hero.Alex(Apprentice).MaxMP\line ____Change Variable [0007: ClassSwitch(Attack)] Set Hero.Alex(Apprentice).Attack\line ____Change Variable [0008: ClassSwitch(Defense)] Set Hero.Alex(Apprentice).Defense\line ____Change Variable [0009: ClassSwitch(Mind)] Set Hero.Alex(Apprentice).Mind\line ____Change Variable [0010: ClassSwitch(Agility)] Set Hero.Alex(Apprentice).Agility\line ____Change Variable [0011: ClassSwitch(Weapon)] Set Hero.Alex(Apprentice).Arms No.\line ____Change Variable [0012: ClassSwitch(Shield)] Set Hero.Alex(Apprentice).Shield No.\line ____Change Variable [0013: ClassSwitch(Armor)] Set Hero.Alex(Apprentice).Armor No.\line ____Change Variable [0014: ClassSwitch(Helmet)] Set Hero.Alex(Apprentice).Helmet No.\line ____Change Variable [0015: ClassSwitch(Other)] Set Hero.Alex(Apprentice).Other No.\line ____Change Ability.Alex(Journeyman).Decrease 999999999\line [i]____Comment: It won't go below zero. Now repeat for each ability.[/i]\line ____Change Ability.Alex(Journeyman).Increase [0001: ClassSwitch(Level)]\line [i]____Comment: Repeat for all variables until you get to "Weapon."[/i]\line ____Change Equipment.Alex(Journeyman).Equip.[0011: ClassSwitch(Weapon)]\line [i]____Comment: Repeat for the rest of the variables.[/i]\line ____Change Party.Add Alex(Journeyman)\line ____Change Party.Remove Alex(Apprentice)\line [i]____Comment: If you have a party order system, adapt this to put him in the right place.[/i]\line End Case\line\line Shadowtext: You need to repeat that for every class. Optionally, you can use another variable to represent what class you start in, and one to say where you're going, but that's all according to how you switch. Don't forget to replace which character is the source, and which is the target with any switchover.\line\line Master Mage: "Looks like you may have competition for who's to be my pet Journeyman, Shadowtext."\line Shadowtext: No one else will put up with you, Ayolis!\line Master Mage: "Don't make me blast you.\par
Shadowtext: Instead of classes, one could also Transform entirely. That's just a change of the story though. Remember in Illusion of Gaia, when Gaia would transform Will into Freedan and/or Shadow? Do that.\par
Shadowtext: Transformational Magic, as suggested by DeathHawk, (who surprisingly, has never been to the board, so patrons, you don't know him.) are all like this. Read the next three tutorials to see "Command Transformations," "Event Transformations," and "Variable Transformations." And, for those who may not realize, Variable-Driven Transformation is what they used to make "Trances" in FF9, and Command-Driven transformation is how they did "Dopplegang" in Chrono Cross, I think. And Event Transformations are how they did Illusion of Gaia transformations for sure.\par
Master Mage: "I met an apprentice who could cast double the spells when he was angry enough, once. He was Vivi, and he called it the "Trance."\par
Shadowtext: And it's not THAT different from a Class Change, it's just in-battle. It's also similar to a Limit Break in that it relies on transformations. In fact, showing transformations this way is little more than an excuse to finally include a Limit Break tutorial in these lessons so I can finally tell people to look here.\par
Master Mage: Apparently, the trance is mostly put on by a certain amount of beating taking place.\par
Shadowtext: Here's the battle-event that calculates damage and inputs it into a variable.\par
Battle Event "Calculate Trance"\par
Condition Turn Number 0X + 1 turns.\par
Fork Conditions: Switch [0001: vViviTrancing] False\par
____Fork Conditions: Variable [0001: vViviOldHP] 0 Same\par
________Set Variable [0002: vViviNewHP] Hero.Vivi.HP\par
________Fork Conditions: Variable [0002: vViviNewHP] 0 Other\par
____________Set Variable [0001: vViviOldHP] Set [0002: vViviNewHP]\par
________End Conditions\par
____Else\par
________Set Variable [0002: vViviNewHP]Hero.Vivi.HP\par
________Fork Conditions: Variable [0001: vViviOldHP] [0002: vViviNewHP] Smaller\par
\pard\cf0\f1\par
}
 